<?php
 /**
  * Fichiers de gestion des flux Atom
  */


define('ATOM_NMSP'		,'xmlns="http://www.w3.org/2005/Atom"');
define('XHTML_NMSP'		,'xmlns="http://www.w3.org/1999/xhtml"');

/**
 * Construit l'entête d'un feed Atom avec comme titre $title, id $id, updated à la date locale courante et comme author Système
 * @param string $title titre du feed Atom
 * @param string $id id du feed Atom
 * @return string header d'un feed Atom
 */
function getHeaderAtomFeed($title, $id) {
	return '<feed ' . ATOM_NMSP . '>
 		<title ' . ATOM_NMSP . '>' . $title . '</title>
        <id ' . ATOM_NMSP . '>' . $id . '</id>
        <updated ' . ATOM_NMSP . '>' . date('c') . '</updated>
        <author ' . ATOM_NMSP . '>
          	<name ' . ATOM_NMSP . '>Système</name>
        </author>';
}

/**
 * Retourne le footer d'un feed Atom
 * @return string
 */
function getFooterAtomFeed() {
	return '</feed>';
}

/**
 * Construit l'entête d'un Entry Atom avec comme titre $title, id $id, updated à la date locale courante et comme author Système
 * @param $title titre de l'entry
 * @param $id id de l'entry
 * @return string
 */
function getHeaderAtomEntry($title, $id) {
	return '<entry ' . ATOM_NMSP . '>
                <title ' . ATOM_NMSP . '>' . $title . '</title>
                <id ' . ATOM_NMSP . '>' . $id . '</id>
                <updated ' . ATOM_NMSP . '>' . date('c') . '</updated>
                <author ' . ATOM_NMSP . '>
		          	<name ' . ATOM_NMSP . '>Système</name>
		        </author>';
}

/**
 * Retourne le footer d'un entry Atom
 * @return string
 */
function getFooterAtomEntry() {
	return '</entry>';
}

/**
 * Retourne le content d'un entry Atom contenant le texte XHTML $contentXHTML
 * @param $contentXHTML contenu XHTML du content entry
 * @return string
 */
function getContentEntryAtom($contentXHTML) {
	return '<content type="xhtml" '. ATOM_NMSP . '>
			      <div ' . XHTML_NMSP . '>'. $contentXHTML . '</div>
   		 	</content>';
}

/**
 * Construit un feed atom ayant pour titre $feedTitle et id $feedId et, contenant les entries du tableau $listEntries
 * @param $feedTitle titre du feed Atom
 * @param $feedId id du feed Atom
 * @param $listEntries tableau des entries
 * @return string feed Atom
 */
function buildFeedAtom($feedTitle, $feedId, $listEntries) {
	$atomFeed = getHeaderAtomFeed($feedTitle, $feedId);
	foreach ($listEntries as $entry) {
		$atomFeed .= $entry;
	}
	$atomFeed .= getFooterAtomFeed();
	return $atomFeed;
}

/**
 * Construit et retourne un entry Atom de titre $title, d'id $id et de contenu $contentXHTML
 * @param $title titre de l'entry
 * @param $id id du feed Atom
 * @param $contentXHTML contenu de l'entry Atom
 * @return string l'entry de l'Atom
 */
function buildEntryAtom($title, $id, $contentXHTML) {
	$entry = getHeaderAtomEntry($title, $id);
	$entry .= getContentEntryAtom($contentXHTML);
	$entry .= getFooterAtomEntry();
	return $entry;
}
